home *** CD-ROM | disk | FTP | other *** search
/ SGI Enlighten DSM 1.1 / SGI EnlightenDSM 1.1.iso / cdinstal
Text File  |  1998-06-30  |  25KB  |  1,002 lines

  1. #!/bin/sh
  2. #
  3. #  (c) 1996-1998 Enlighten Software Solutions, Inc.
  4. #  All Rights Reserved
  5. #
  6. #  Script:  $CDROM_DIR/CDINSTAL
  7. #
  8. #         * CDINSTAL should be in the root dir of the CDROM ($CDROM_DIR).
  9. #         * CDINSTAL assumes there is the following file structure:
  10. #
  11. #           $CDROM_DIR/:
  12. #            AIX41          COMMON         SCO32          SOL25 
  13. #            CDINSTAL       HPUX905        SCO5           SUN413
  14. #            IRIX           SOL24
  15. #
  16. #           $CDROM_DIR/<os name>/:
  17. #            ADMIN.TXT     EMD.TXT       INFORMIX.TXT  ODBC.TXT      RENLD.TXT
  18. #            ADMIN.Z       EMD.Z         INFORMIX.Z    ODBC.Z        RENLD.Z
  19. #            COMMON.TXT    EVENTS.TXT    INSTALL.TXT   PEP.TXT
  20. #            COMMON.Z      EVENTS.Z      INSTALL.Z     PEP.Z
  21. #
  22. #            (Note that due to the limitations of some OSes, all these 
  23. #             components may not exist).
  24. #
  25. #         * CDINSTAL and enl_xinstall require installations from tape
  26. #           to be extracted (creating a directory structure like above)
  27. #           before they are invoked.
  28. #
  29. # 'CDINSTAL' does the following:
  30. #  1) auto-detects the local host's OS 
  31. #  2) asks to archive any pre-2.0 Enlighten configuration files
  32. #  3) prompts for the local installation directory 
  33. #  4) stores that directory pathname into /etc/enlighten
  34. #  5) cp's the necessary applications to the installation directory
  35. #  6) execs the installation program (enl_xinstall)
  36. #
  37. #
  38. #
  39.  
  40. #
  41. # Be anal. For security purposes any file or directory created 
  42. # by the execution of this script should have all permission 
  43. # on group and other turned off.
  44. #
  45. umask 077
  46.  
  47. E_REL="2.6.0" # Enlighten Release number
  48.  
  49. PATH=/bin:/usr/bin:/usr/sbin:/usr/bsd:/usr/ucb:/etc:/usr/etc:$PATH
  50. export PATH
  51.  
  52. hit_return(){
  53.     echo
  54.     echo "Please hit <return> to continue ..."
  55.     read nothin
  56.     case "$nothin" in
  57.         q | quit | x | e | exit ) 
  58.             echo "Exitting.  All partitions left untouched."
  59.             echo
  60.             exit 2
  61.             ;;
  62.     esac
  63. }
  64.  
  65. get_answer(){
  66.     read response;
  67.     case "$response" in
  68.         "" )
  69.             response=y
  70.             ;;
  71.         *)  
  72.             ;;
  73.     esac
  74. }
  75.  
  76. proc_version_1(){
  77.     echo "An old version of Enlighten is installed locally."
  78.     echo
  79.     echo "Please choose from the following:"
  80.     echo
  81.     echo "keep)    Keep the old version of Enlighten"
  82.     echo "         and install Enlighten $REL components in a different directory"
  83.     echo
  84.     echo "archive) Deinstall the old version of Enlighten"
  85.     echo "         and archive files in $OLD_INSTALL_DIR"
  86.     echo
  87.     echo "remove)  Deinstall the old version of Enlighten"
  88.     echo "         and delete all files in $OLD_INSTALL_DIR"
  89.     echo
  90.     $ECHO "[keep|archive|remove|exit] ? \c"
  91.  
  92.     read response
  93.  
  94.     case "$response" in
  95.         q | quit | x | e | exit ) 
  96.             echo "Exitting.  All partitions left untouched."
  97.             echo
  98.             exit 2
  99.             ;;
  100.         k* | K* )
  101.             echo Keeping Enlighten stored in $OLD_INSTALL_DIR intact.
  102.             ;;
  103.         a* | A* )
  104.             echo "To which directory should I archive the contents of $OLD_INSTALL_DIR"
  105.             $ECHO "(default = '$ARCHIVE_DIR') ?\c"
  106.             read userArchiveDir
  107.             case "$userArchiveDir" in
  108.                 "" ) 
  109.                     userArchiveDir=$ARCHIVE_DIR ;;
  110.                 * )
  111.                     if [ ! -d $userArchiveDir ] ; then
  112.                         mkdir -p $userArchiveDir
  113.                         if [ $? -ne 0 ] ; then
  114.                             echo "Could not create directory $userArchiveDir. "
  115.                             echo "Exitting. All partitions left untouched."
  116.                             echo
  117.                             exit 2
  118.                         fi
  119.                     fi
  120.                     ;;
  121.             esac
  122.  
  123.             #
  124.             # Make sure that they're not putting the tar file archive in $OLD_INSTALL_DIR...
  125.             #
  126.  
  127.             blah=`echo "$userArchiveDir" | grep "$OLD_INSTALL_DIR"`
  128.             export blah
  129.  
  130.  
  131.             if [ ! "$blah" = "" ] ; then
  132.                 echo "Cannot create tar file inside previous install directory."
  133.                 echo "Exitting. All partitions left untouched."
  134.                 echo
  135.                 exit 2
  136.             fi
  137.  
  138.             echo "Creating tar file $userArchiveDir/$ARCHIVE_NAME."
  139.             tar -cf $userArchiveDir/$ARCHIVE_NAME $OLD_INSTALL_DIR
  140.             if [ $? -ne 0 ] ; then
  141.                 echo "The tar operation failed."
  142.                 echo "Exitting. All partitions left untouched."
  143.                 echo
  144.                 exit 2
  145.             else
  146.                 compress $userArchiveDir/$ARCHIVE_NAME
  147.                 echo "Archival of $OLD_INSTALL_DIR was successful. "
  148.                 echo "The tarred and compressed file is stored in"
  149.                 echo "$userArchiveDir/$ARCHIVE_NAME."
  150.                 echo
  151.                 echo "Are you sure you want to REMOVE ALL FILES stored in"
  152.                 $ECHO "$OLD_INSTALL_DIR [y|n|exit] (default is 'y') ?\c"
  153.                 get_answer
  154.                 case $response in
  155.                     y* | Y* )
  156.                         /bin/rm -rf $OLD_INSTALL_DIR
  157.                         ToastConfigFiles
  158.                         ;;
  159.                 esac
  160.             fi
  161.             ;;
  162.  
  163.         r* | R* )
  164.             echo "Are you sure you want to REMOVE ALL FILES stored in"
  165.             $ECHO "$OLD_INSTALL_DIR [y|n|exit] (default is 'y') ?\c"
  166.             get_answer;
  167.             case $response in
  168.                 y* | Y* )
  169.                     /bin/rm -rf $OLD_INSTALL_DIR
  170.                     ToastConfigFiles
  171.                     ;;
  172.                 *)
  173.                     echo "Exitting. All partitions left untouched."
  174.                     echo
  175.                     exit 2
  176.                     ;;
  177.             esac
  178.             ;;
  179.     esac
  180. }
  181.  
  182. #
  183. #  1) get the local host's OS type 
  184. #  -------------------------------------------------------------------
  185. #  Note: GetHostInfo() is that same in buildcd, os_type, and CDINSTAL.
  186. #  Any changes made here should be pushed into these other files as well.
  187. #
  188.  
  189. GetHostInfo(){
  190.     OS=`uname -s`
  191.     REL=`uname -r`
  192.     ORIG_OS=$OS
  193.  
  194.     PSOPTS=""
  195.  
  196.     ECHO=echo
  197.     case "$OS" in
  198.  
  199.     OSF1)
  200.         case "$REL" in
  201.  
  202.         V3.2 | V4.0 ) 
  203.             OS="DEC3240" ;;
  204.  
  205.         * ) 
  206.             if [ "$install_any" -eq 1 ] ; then
  207.                 echo ""
  208.                 echo "Detected OS: $OS $REL"
  209.                 echo "Using DEC 4.0 binaries...."
  210.                 OS="DEC3240"
  211.             else
  212.                 OS="unknown" 
  213.             fi
  214.             ;;
  215.  
  216.         esac ;;
  217.         
  218.     HP-UX)
  219.         case "$REL" in
  220.  
  221.         A.09.04 | A.09.05 ) 
  222.             OS="HP904905" ;;
  223.  
  224.         ?.10.* ) 
  225.             OS="HP10X" ;;
  226.  
  227.         * ) 
  228.             if [ "$install_any" -eq 1 ] ; then
  229.                 echo ""
  230.                 echo "Detected OS: $OS $REL"
  231.                 echo "Using HPUX 10.x binaries...."
  232.                 OS="HP10X"
  233.             else
  234.                 OS="unknown" 
  235.             fi
  236.             ;;
  237.  
  238.         esac ;;
  239.  
  240.     AIX)
  241.         VER=`uname -v`
  242.         if [ "$VER" = "4" ] ; then
  243.             if [ "$REL" = "1" -o "$REL" = "2" ] ; then
  244.                 OS="AIX41"
  245.             elif [ "$install_any" -eq 1 ] ; then
  246.                 echo ""
  247.                 echo "Detected OS: $OS $REL"
  248.                 echo "Using AIX 4.1 binaries...."
  249.                 OS="AIX41"
  250.             else
  251.                 OS="unknown"
  252.             fi
  253.         elif [ "$install_any" -eq 1 ] ; then
  254.             echo ""
  255.             echo "Detected OS: $OS $REL"
  256.             echo "Using AIX 4.1 binaries...."
  257.             OS="AIX41"
  258.         else
  259.             OS="unknown"
  260.         fi 
  261.         ;;
  262.  
  263.     SunOS)
  264.         case "$REL" in
  265.  
  266.         5.4 | 5.5 | 5.5.1 ) 
  267.             OS="SOL2X" ;;
  268.  
  269.         4.1.3* | 4.1.4* )   
  270.             OS="SUNOS41X"
  271.  
  272.             if [ -x /usr/5bin/echo ] ; then
  273.                 ECHO=/usr/5bin/echo
  274.             fi
  275.             PSOPTS="-auxww" ;;
  276.  
  277.         *) 
  278.             if [ "$install_any" -eq 1 ] ; then
  279.                 echo ""
  280.                 echo "Detected OS: $OS $REL"
  281.                 echo "Using Solaris 2.x binaries...."
  282.                 OS="SOL2X"
  283.             else
  284.                 OS="unknown" 
  285.             fi
  286.             ;;
  287.  
  288.         esac ;;
  289.  
  290.     IRIX | IRIX64 )
  291.         case "$REL" in
  292.  
  293.         5.3 | 6.* ) 
  294.             OS="IRIX5X6X" ;;
  295.         *) 
  296.             if [ "$install_any" -eq 1 ] ; then
  297.                 echo ""
  298.                 echo "Detected OS: $OS $REL"
  299.                 echo "Using IRIX 6.x binaries...."
  300.                 OS="IRIX5X6X"
  301.             else
  302.                 OS="unknown" 
  303.             fi
  304.             ;;
  305.  
  306.         esac ;;
  307.  
  308.     *)
  309.         HW=`uname -m`
  310.         case "$HW" in
  311.  
  312.         i386)
  313.             case "`uname -s`" in
  314.  
  315.             SCO_SV) 
  316.                 OS="SCO5X" ;;
  317.  
  318.             *)
  319.                 case "$REL" in
  320.  
  321.                 3.2)
  322.                     OS="SCO32" ;;
  323.  
  324.                 *)
  325.                     if [ "$install_any" -eq 1 ] ; then
  326.                         echo ""
  327.                         echo "Detected OS: $OS $REL"
  328.                         echo "Using SCO 5.x binaries...."
  329.                         OS="SCO5X"
  330.                     else
  331.                         OS="unknown" 
  332.                     fi
  333.                     ;;
  334.  
  335.                 esac ;;
  336.             esac ;;
  337.  
  338.         *)
  339.             OS="unknown" ;;
  340.  
  341.         esac ;;
  342.     esac
  343.  
  344.     if [ $OS = "unknown" ] ; then
  345.         echo
  346.         echo "### Sorry, the local OS ($ORIG_OS $REL)is not currently supported by Enlighten/DSM."
  347.         echo "    A port may be on the way, and your request may speed up the effort!"
  348.         echo "    Please contact Enlighten Software for more information."
  349.         echo
  350.         echo "Exitting.  No partitions were touched."
  351.         echo
  352.         exit 2;
  353.     fi
  354.  
  355.     if [ -z "$PSOPTS" ] ; then
  356.         OPTS="-e"
  357.         PIDCOLUMN=1
  358.     else
  359.         OPTS=$PSOPTS
  360.         PIDCOLUMN=2
  361.     fi
  362.  
  363.     export OPTS PIDCOLUMN OS
  364. }
  365.  
  366. buildVirtualCDROM () {
  367.  
  368.     actualCdromDir=$cdromDir
  369.     cdromDir=/tmp/cdrom
  370.  
  371.     echo
  372.     echo "$appName: The CD-ROM was mounted with lowercase filenames."
  373.  
  374.     INSTALL_FILE=$cdromDir/$OS/INSTALL
  375.  
  376.     if [ -d $cdromDir ] ; then
  377.         if [ -d $cdromDir.old ] ; then
  378.             rm -rf $cdromDir.old
  379.             if [ $? -ne 0 ] ; then
  380.                 echo "Could not make virtual CD-ROM in $cdromDir. Exitting."
  381.                 exit 1
  382.             fi
  383.         fi
  384.         mv -f $cdromDir $cdromDir.old
  385.     fi
  386.  
  387.     mkdir $cdromDir
  388.     if [ $? -ne 0 ] ; then
  389.         echo "Could not make a virtual CD-ROM in $cdromDir. Exitting."
  390.         exit 1
  391.     fi
  392.  
  393.     cd $actualCdromDir
  394.  
  395.     echo "$appName: A virtual CD-ROM is now being built in $cdromDir."
  396.  
  397.     for i in * ; do
  398.         $ECHO ".\c"
  399.         if [ -d $i ] ; then
  400.             mkdir $cdromDir/`echo $i | tr [a-z] [A-Z]`
  401.             if [ $? -ne 0 ] ; then
  402.                 echo
  403.                 echo "Could not make virtual CD-ROM in $cdromDir. Exitting."
  404.                 exit 1
  405.             fi
  406.         else
  407.             ln -s `pwd`/$i $cdromDir/`echo $i | tr [a-z] [A-Z]`
  408.             if [ $? -ne 0 ] ; then
  409.                 echo
  410.                 echo "Could not make virtual CD-ROM in $cdromDir. Exitting."
  411.                 exit 1
  412.             fi
  413.         fi
  414.     done
  415.  
  416.     for i in */* ; do
  417.         $ECHO ".\c"
  418.         base=`basename $i`
  419.         BASE=`echo $base | tr [a-z] [A-Z]`
  420.         tree=`dirname $i`
  421.         TREE=`echo $tree | tr [a-z] [A-Z]`
  422.  
  423.         ln -s `pwd`/$i  $cdromDir/$TREE/$BASE
  424.  
  425.         if [ $? -ne 0 ] ; then
  426.             echo
  427.             echo "Could not make virtual CD-ROM in $cdromDir. Exitting."
  428.             exit 1
  429.         fi
  430.     done
  431.  
  432.     echo
  433.     echo
  434.     newAppName=`echo $appName | tr [a-z] [A-Z]`
  435.  
  436.     if [ -x $cdromDir/$newAppName ] ; then
  437.         echo "In the future, please use $cdromDir/$newAppName."
  438.         echo
  439.         echo "Please note: for the installation to work successfully, you must use"
  440.         echo "'$cdromDir' as your CD-ROM mount point in the Enlighten Netowrk Installer."
  441.         echo "This has been set as your default CD-ROM mount point."
  442.         hit_return
  443.  
  444.         echo "Starting $cdromDir/$newAppName..."
  445.         cd $cdromDir
  446.         exec ./$newAppName
  447.     else
  448.         echo "### $cdromDir/$newAppName was not executable. "
  449.         echo "    Please contact Enlighten Software Support."
  450.         echo
  451.         echo "Exitting."
  452.         exit 1
  453.     fi
  454. }
  455.  
  456. #
  457. # Verify that the install component is there, and start sgiinst.sh if
  458. # necessary
  459.  
  460. VerifyCDROM() {
  461.  
  462.     INSTALL_FILE=$cdromDir/$OS/INSTALL
  463.  
  464.     if [ ! -r $INSTALL_FILE -a ! -r $INSTALL_FILE.Z ] ; then
  465.  
  466.         #
  467.         # Deal with non-caps-mounted cdroms.
  468.         #
  469.         LOWERCASE_OS=`echo $OS | tr [A-Z] [a-z]`
  470.         if [ -f "$cdromDir/$LOWERCASE_OS/install" -o -f "$cdromDir/$LOWERCASE_OS/install.z" ] ; then
  471.             buildVirtualCDROM
  472.  
  473.         else
  474.             echo
  475.             echo "### Fatal: The $OS/INSTALL component is missing."
  476.             echo
  477.             echo "Please 'cd' to the root directory of the Enlighten CD-ROM and"
  478.             echo "restart $appName"
  479.             echo
  480.             echo "Exitting.  All partitions left untouched."
  481.             echo
  482.             exit 2
  483.         fi
  484.     fi
  485. }
  486.  
  487. #
  488. #  2) see if there are any previous installations of Enlighten, and
  489. #     toast.
  490. #  -------------------------------------------------------------------
  491. #
  492.  
  493. GetOldInstallDir (){
  494.  
  495.     #
  496.     #  GetOldInstallDir sets OLD_VERSION to be
  497.     #   '0' if no installation
  498.     #   '1' if release 1.1, 1.2
  499.     #   '2' if release 2.x
  500.     #
  501.     #  and OLD_INSTALL_DIR to be
  502.     #   'virgin' if no installation
  503.     #   'missing' if the enlighten directory is missing
  504.     #    or the actual name of the installation directory
  505.     #
  506.  
  507.     OLD_INSTALL_DIR=virgin
  508.     OLD_VERSION=0
  509.  
  510.     if [ -f /usr/lib/enlighten/HOME ] ; then
  511.         
  512.         OLD_VERSION=1
  513.         OLD_INSTALL_DIR=`cat /usr/lib/enlighten/HOME`
  514.  
  515.         if [ ! -d $OLD_INSTALL_DIR ] ; then
  516.             OLD_INSTALL_DIR=missing
  517.         fi
  518.  
  519.     elif [ -f $KEY_FILE ] ; then
  520.  
  521.         OLD_VERSION=2
  522.         OLD_INSTALL_DIR=`cat $KEY_FILE | egrep "^enlighten=" | cut "-d=" -f2-`
  523.  
  524.         case $OLD_INSTALL_DIR in
  525.  
  526.             "")    OLD_INSTALL_DIR=missing
  527.                 ;;
  528.  
  529.             *)    if [ ! -d $OLD_INSTALL_DIR ] ; then
  530.                     echo 
  531.                     echo "Error: The 'enlighten' directory stored in /etc/enlighten, "
  532.                     echo "'$OLD_INSTALL_DIR,' does not exist."
  533.                     OLD_INSTALL_DIR=missing
  534.                 fi
  535.                 ;;
  536.         esac
  537.  
  538.     fi
  539. }
  540.  
  541. ToastConfigFiles() {
  542.  
  543.     #
  544.     # TODO: Remove any modifications to files (etc/rc, etc/services) added to by 
  545.     #       Enlighten 1.x installation scripts.
  546.     #
  547.     rm -rf /usr/lib/enlighten
  548. }
  549.  
  550. #
  551. #  3) prompt for the installation directory from the user
  552. #  -------------------------------------------------------------------
  553. #
  554.  
  555. GetNewInstallDir() {
  556.  
  557.     if [ $OLD_INSTALL_DIR = missing ] ; then
  558.         echo
  559.         echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  560.         echo "            Error Found - The Enlighten directory is missing. "
  561.         echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  562.         echo
  563.         echo "A previously installed version of Enlighten was not removed properly."
  564.         echo "To deinstall the product, check that"
  565.  
  566.         if [ $OLD_VERSION = 1 ] ; then
  567.             echo "  * the /usr/lib/enlighten/HOME file is removed or points to where Enlighten is installed"
  568.         elif [ $OLD_VERSION = 2 ] ; then
  569.             echo "  * the $KEY_FILE file is removed"
  570.         fi
  571.         echo "  * references in startup files (rc files) are deleted"
  572.         echo "  * the Enlighten directory is recursively removed" 
  573.         echo
  574.         #echo "After Enlighten is properly deinstalled from this host, try $0 again."
  575.         #echo
  576.         echo $appName exitting...
  577.         echo
  578.         exit 2
  579.     fi
  580.  
  581. #    if [ $VERBOSE = yes ] ; then
  582.         echo
  583.         echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  584.         echo "           Welcome to Enlighten for Unix/DSM (release $E_REL)"
  585.         echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  586.         echo
  587.         echo "  $appName does the following:"
  588.         echo
  589.         echo "  * auto-detects the local host's OS"
  590.         echo "  * prompts for the directory to install Enlighten locally"
  591. #        echo "  * transfers and executes the license manager (lmgrd)"
  592. #        echo "    and the network installation GUI (enl_xinstall)"
  593.         echo "  * transfers and executes the network installation GUI (enl_xinstall)"
  594.         echo
  595.         echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  596.         echo "      (type 'exit' at any of this installer's prompts to exit)         "
  597.  
  598.         hit_return
  599.  
  600.     #
  601.     # Default to asking the user a installation directory.
  602.     # validDir is set to "yes" if a 2.0 installation previously exists.
  603.     #
  604.  
  605.     validDir=no
  606.  
  607.     if [ $OLD_VERSION = 0 ] ; then
  608.             echo "Enlighten products are not currently installed on this system."
  609.         #
  610.         # Get a valid directory from the user
  611.         #
  612.         installDirectory=$DEFAULT_INSTALLDIR
  613.  
  614.     elif [ $OLD_VERSION = 1 ] ; then
  615.  
  616.         proc_version_1;
  617.  
  618.     elif [ $OLD_VERSION = 2 ] ; then
  619.  
  620.         echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  621.         echo
  622.         echo "  Enlighten 2.x components are currently installed on this system in "
  623.         echo "  $OLD_INSTALL_DIR.  Additional components of Enlighten must also be"
  624.         echo "  installed into this directory."
  625.         echo
  626.  
  627. #        if [ $VERBOSE = yes ] ; then
  628.             echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  629.             echo
  630.             echo "  If you want to copy Enlighten to a different directory,"
  631.             echo "  (e.g. copy /old/enlighten to /new/enlighten), do the following:"
  632.             echo 
  633.             echo "  1) Run /old/enlighten/bin/stop_enl_daemons"
  634.             echo "  2) Copy /old/enlighten to /new/enlighten"
  635.             echo "  3) Edit /etc/enlighten, changing the 'enlighten=...' line "
  636.             echo "     to read 'enlighten=/new/enlighten'"
  637.             echo "  4) Edit your rc file to reflect the new directory"
  638.             echo
  639.             echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
  640.  
  641.         hit_return
  642.  
  643.         installDirectory=$OLD_INSTALL_DIR
  644.         validDir=yes
  645.     fi
  646.  
  647.     #
  648.     # Must force the directory to be OLD_INSTALL_DIR if old_version = 2.
  649.     #
  650.             
  651.     while [ $validDir = no ] 
  652.     do
  653.         echo
  654.         echo "Install Enlighten components into '$installDirectory' ?"
  655.         $ECHO "[y|n|exit] (default is 'y') \c"
  656.         get_answer 
  657.         case $response in
  658.             q | quit | x | e | exit ) 
  659.                 echo "Exitting. $installDirectory untouched."
  660.                 exit 2
  661.                 ;;
  662.             y | yes | Y | YES )
  663.                 validDir=yes
  664.                 ;;
  665.             * )
  666.                 if [ $OLD_VERSION = 2 ] ; then
  667.                     echo "Exitting. $installDirectory untouched."
  668.                     exit 2
  669.                 else
  670.                     echo
  671.                     echo "Where would you like to install Enlighten on this machine"
  672.                     $ECHO "(instead of '$installDirectory')? \c"
  673.                     read newInstallDirectory
  674.                     case $newInstallDirectory in
  675.                         q | quit | x | e | exit ) 
  676.                             echo "Exitting. $installDirectory untouched."
  677.                             exit 2
  678.                             ;;
  679.                         \/* )
  680.                             installDirectory=$newInstallDirectory
  681.                             ;;
  682.                         * )
  683.                             echo 
  684.                             echo "Please enter full pathanames."
  685.                     esac
  686.                 fi
  687.                 ;;
  688.         esac
  689.     done
  690. }
  691.  
  692. #
  693. #  4) store the ENLIGHTEN key into /etc/enlighten
  694. #  -------------------------------------------------------------------
  695. #
  696.  
  697. StoreInstallDirIntoEtcEnlighten(){
  698.     if [ -f $KEY_FILE ] ; then
  699.         mv $KEY_FILE $KEY_FILE.old
  700.         egrep -v "^enlighten=" $KEY_FILE.old > $KEY_FILE
  701.         mv $KEY_FILE $KEY_FILE.old
  702.         egrep -v "^cdrom_dir=" $KEY_FILE.old > $KEY_FILE
  703.         mv $KEY_FILE $KEY_FILE.old
  704.         egrep -v "^install_host=" $KEY_FILE.old > $KEY_FILE
  705.         mv $KEY_FILE $KEY_FILE.old
  706.         egrep -v "^install_host_ip=" $KEY_FILE.old > $KEY_FILE
  707.     else
  708.         echo "#" > $KEY_FILE
  709.         echo "# File: $KEY_FILE" >> $KEY_FILE
  710.         echo "#" >> $KEY_FILE
  711.         echo "# This file is used by all Enlighten components as a common repository" >> $KEY_FILE
  712.         echo "# for the root Enlighten directory, the hostnames of the PEP and EMD servers," >> $KEY_FILE
  713.         echo "# and the installation host (used for automatic license administration)." >> $KEY_FILE
  714.         echo "#" >> $KEY_FILE
  715.         echo "# Note that editting this file has the potential to corrupt the local " >> $KEY_FILE
  716.         echo "# Enlighten installation. Please refer to the documentation for more info." >> $KEY_FILE
  717.         echo "#" >> $KEY_FILE
  718.         echo "# (c) 1996-1998 Enlighten Software Solutions, Inc." >> $KEY_FILE
  719.         echo "# All Rights Reserved" >> $KEY_FILE
  720.         echo "#" >> $KEY_FILE
  721.         echo "" >> $KEY_FILE
  722.     fi
  723.  
  724.     echo "enlighten=$installDirectory" >> $KEY_FILE
  725.     local_hostname=`uname -n`
  726.     echo "install_host=$local_hostname" >> $KEY_FILE
  727.  
  728.     #
  729.     # Now put in the install_host_ip tag
  730.     #
  731.  
  732.     if [ ! -r /etc/hosts ] ; then
  733.         echo
  734.         echo "Warning: Could not read the /etc/hosts file in order to resolve"
  735.         echo "         the local host name to an absolute IP address. This may"
  736.         echo "         cause problems with installations to remote hosts if"
  737.         echo "         they cannot resolve $local_hostname to an IP address."
  738.         echo
  739.     else
  740.         local_ip_address=`grep -v "^[     ]*#" /etc/hosts | fgrep $local_hostname | awk '{ print $1 }'`
  741.         if [ -z "$local_ip_address" ] ; then
  742.             echo
  743.             echo "Warning: The /etc/hosts file does not seem to resolve"
  744.             echo "         the local host name to an absolute IP address. This may"
  745.             echo "         cause problems with installations to remote hosts if"
  746.             echo "         they cannot resolve $local_hostname to an IP address."
  747.             echo
  748.         else
  749.             echo "install_host_ip=$local_ip_address" >> $KEY_FILE
  750.         fi
  751.     fi
  752.     echo "cdrom_dir=$cdromDir" >> $KEY_FILE
  753.     echo "Stored the new installation information into $KEY_FILE successfully."
  754.  
  755.     chown root $KEY_FILE
  756.     chmod 444 $KEY_FILE
  757.     if [ $? -ne 0 ] ; then
  758.         echo
  759.         echo "Error: Could not change access bits of $KEY_FILE."
  760.         echo "       This may cause problems when starting the Enlighten GMS."
  761.         echo "       ($KEY_FILE should be chmod'ed to 444)"
  762.     fi
  763. }
  764.  
  765. #
  766. #  5) cp necessary applications to the installation directory
  767. #  -------------------------------------------------------------------
  768. #
  769.  
  770. CopyInstallFiles(){
  771.  
  772.     if [ ! -d $installDirectory ] ; then
  773.         mkdir -p $installDirectory
  774.         chmod 700 $installDirectory
  775.         if [ $? -ne 0 ] ; then
  776.             echo
  777.             echo "### Fatal: 'mkdir $installDirectory' failed."
  778.             echo
  779.             echo "$appName halting ..."
  780.             exit 2
  781.         fi
  782.     else 
  783.         
  784.         #
  785.         # Kill any previously-started e_tokend.
  786.         #
  787.  
  788.         OLD_PID=`ps $OPTS | grep e_tokend | egrep -v "enl_post|grep" \
  789.             | awk '{ print $'$PIDCOLUMN'; }'`
  790.         if [ ! -z "$OLD_PID" ] ; then
  791.             echo "$appName: Killing a previously-started e_tokend [pid $OLD_PID]"
  792.             kill $OLD_PID
  793.             if [ $? -ne 0 ] ; then
  794.                 echo "$appName: Run as user 'root'." 1>&2
  795.                 exit $?
  796.             fi
  797.             sleep $SHUTDOWN_SECS
  798.             PIDS_THAT_WOULD_NOT_DIE=`ps $OPTS | grep e_tokend \
  799.                 | egrep -v "enl_post|grep" \
  800.                 | awk '{ print $'$PIDCOLUMN'; }'`
  801.             if [ ! -z "$PIDS_THAT_WOULD_NOT_DIE" ] ; then
  802.                 kill -9 $PIDS_THAT_WOULD_NOT_DIE
  803.                 if [ $? -ne 0 ] ; then
  804.                     echo "$appName: Run as user 'root'." 1>&2
  805.                     exit $?
  806.                 fi
  807.             fi
  808.         fi
  809.     fi
  810.  
  811.     echo
  812.     echo "Extracting the install component into $installDirectory ..."
  813.  
  814.     TAR_OPTIONS=-xvf
  815.  
  816.     if [ -f $INSTALL_FILE ] ; then    
  817.         ( cd $installDirectory ; tar $TAR_OPTIONS $INSTALL_FILE )
  818.     elif [ -f $INSTALL_FILE.Z ] ; then
  819.         ( cd $installDirectory ; zcat $INSTALL_FILE.Z | tar $TAR_OPTIONS - )
  820.     else
  821.         echo
  822.         echo "### Fatal: The install component is missing."
  823.         echo "    Looked at $INSTALL_FILE and $INSTALL_FILE.Z"
  824.         echo
  825.         echo "Please cd to the root directory of the Enlighten CDROM and"
  826.         echo "restart $appName"
  827.         echo
  828.         echo "Exitting.  All partitions left untouched."
  829.         exit 2
  830.     fi
  831.  
  832.     if [ $? -ne 0 ] ; then
  833.         echo
  834.         echo "### Fatal: Unarchiving $INSTALL_FILE failed."
  835.         echo "    You may want to 'rm -rf $installDirectory' "
  836.         echo "    if you are going to install into a different directory."
  837.         echo
  838.         echo "$appName halting ..."
  839.         echo
  840.         exit 2
  841.     fi
  842. }
  843.  
  844. #
  845. #  6) setup the log file directory
  846. #  -------------------------------------------------------------------
  847. #
  848.  
  849. SetupLogs() {
  850.     if [ ! -z "$ENLIGHTEN" -a ! "$ENLIGHTEN" = "$installDirectory" ] ; then
  851.         ENLIGHTEN=$installDirectory
  852.         export ENLIGHTEN
  853.     fi
  854.  
  855.     if [ ! -d $installDirectory/logs ] ; then
  856.         mkdir $installDirectory/logs
  857.         if [ $? -ne 0 ] ; then
  858.             echo "$appName: Log messages will be echoed to stderr." 1>&2
  859.             echo "$appName: Please mkdir $installDirectory/logs to fix this." 1>&2
  860.         fi
  861.     fi
  862. }
  863.  
  864.  
  865. KickOffTheInstallProgram(){
  866.     
  867.     #
  868.     # Check to see that DISPLAY is set properly before popping the gui.
  869.     #
  870.     echo
  871.  
  872.     if [ $OS = "SUN413" ] ; then
  873.         XNLSPATH="$installDirectory/msg/C"
  874.         export XNLSPATH
  875.     fi
  876.  
  877.     if [ -x "$installDirectory/bin/$INSTALLER" ] ; then
  878.         if [ -z "$DISPLAY" ] ; then
  879.             echo "Your DISPLAY variable is not set."
  880.             echo "Please set your DISPLAY variable to continue the installation,"
  881.             echo "then invoke $installDirectory/bin/$INSTALLER"
  882.             echo
  883.             exit 2
  884.         fi
  885.         echo "Your DISPLAY variable is set to '$DISPLAY'."
  886.         echo
  887.         echo "Please wait while the Enlighten Network Installer starts up"
  888.         echo "Invoking $installDirectory/bin/$INSTALLER..."
  889.         echo
  890.         exec $installDirectory/bin/$INSTALLER
  891.     else
  892.         echo "Unable to locate the executable $installDirectory/bin/$INSTALLER"
  893.         echo "The install has failed.  Please contact Enlighten Software Support."
  894.         echo
  895.         exit 2
  896.     fi
  897. }
  898.  
  899. #
  900. #  -------------------------------------------------------------------
  901. #  -------------------------------------------------------------------
  902. #  -------------------------------------------------------------------
  903. #
  904. #                     Main Chunk o' da Script
  905. #
  906. #  -------------------------------------------------------------------
  907. #  -------------------------------------------------------------------
  908. #  -------------------------------------------------------------------
  909. #
  910.  
  911. # set the default archival directory (where to stash the upgradable preferences)
  912. ARCHIVE_DIR=/tmp/
  913. ARCHIVE_NAME=enlighten_archive.tar
  914.  
  915. STARTUP_SECS=5
  916. SHUTDOWN_SECS=5
  917.  
  918. # set the default installation program to be the gui installer
  919. INSTALLER=enl_xinstall
  920.  
  921. # set the default Enlighten directory
  922. if [ ! -z "$ENLIGHTEN" ] ; then
  923.     DEFAULT_INSTALLDIR=$ENLIGHTEN
  924. else
  925.     DEFAULT_INSTALLDIR=/opt/enlighten
  926. fi
  927.  
  928. # get the appName
  929. appName=`basename $0`
  930.  
  931. # get the cdrom directory from $0
  932. partialcdromDir=`dirname $0`
  933. cdromDir=`cd $partialcdromDir ; pwd`
  934.  
  935. # get command line argument to allow install to non-supported platforms
  936. install_any=0
  937. if [ "$#" -ge 1 ] ; then
  938.     if [ "$1" = "-any" ] ; then
  939.         install_any=1
  940.     fi
  941. fi
  942.  
  943. # set the default keys database file (normally /etc/enlighten)
  944. if [ -z "$KEY_FILE" ] ; then
  945.     KEY_FILE=/etc/enlighten
  946. fi
  947.  
  948. USER_ID=`id | tr "\(" "=" | cut "-d=" -f2`
  949.  
  950. if [ ! $USER_ID = 0 ] ; then
  951.     echo
  952.     echo "### $appName must be run by the 'root' superuser."
  953.     echo "    Please login as root and try again."
  954.     echo
  955.     echo "Exitting.  All partitions left untouched."
  956.     echo
  957.     exit 2
  958. fi
  959.  
  960. #  1) get the local host's OS type and the pathname to ./platform/
  961. #  -------------------------------------------------------------------
  962.  
  963. GetHostInfo
  964.  
  965. #
  966. # Verify that the install component is there, and start sgiinst.sh if
  967. # necessary
  968.  
  969. VerifyCDROM
  970.  
  971. #  2) see if there are any previous installations of Enlighten, and
  972. #     get the old installation directory
  973. #  -------------------------------------------------------------------
  974.  
  975. GetOldInstallDir $*
  976.  
  977. #  3) prompt for the installation directory from the user
  978. #  -------------------------------------------------------------------
  979.  
  980. GetNewInstallDir $*
  981.  
  982. #  4) cp necessary applications to the installation directory
  983. #  -------------------------------------------------------------------
  984.  
  985. CopyInstallFiles
  986.  
  987. #  5) store the ENLIGHTEN key into /etc/enlighten
  988. #  -------------------------------------------------------------------
  989.  
  990. StoreInstallDirIntoEtcEnlighten
  991.  
  992.  
  993. #  6) ensure ENLIGHTEN is set and log directory exists
  994. #  -------------------------------------------------------------------
  995.  
  996. SetupLogs
  997.  
  998. #  7) exec the proper installer program (cli_installer or gui_installer)
  999. #  -------------------------------------------------------------------
  1000.  
  1001. KickOffTheInstallProgram
  1002.